route.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import { type NextRequest, NextResponse } from 'next/server';
  2. import { fetchJson } from '@/lib/utils/server';
  3. export async function GET(request: NextRequest, { params }: { params: { slug: string } }) {
  4. const { slug } = await params;
  5. switch (slug) {
  6. default:
  7. return new Response(JSON.stringify({ message: '잘못된 요청입니다.' }), { status: 400 });
  8. // accessToken 검증
  9. case 'verify-token': {
  10. const res = await fetchJson('/api/auth/verify-token', {
  11. method: 'GET',
  12. headers: {'Content-Type': 'application/json'},
  13. data: request,
  14. withCredentials: true
  15. });
  16. return new NextResponse(JSON.stringify(res), {
  17. status: 200
  18. });
  19. }
  20. // refreshToken 검증
  21. case 'refresh-token': {
  22. const res = await fetchJson('/api/auth/refresh-token', {
  23. method: 'GET',
  24. headers: {'Content-Type': 'application/json'},
  25. data: request,
  26. withCredentials: true
  27. });
  28. return new NextResponse(JSON.stringify(res), {
  29. status: 200
  30. });
  31. }
  32. }
  33. }
  34. export async function POST(request: NextRequest, { params }: { params: { slug: string } }) {
  35. const { slug } = await params;
  36. switch (slug) {
  37. default:
  38. return new Response(JSON.stringify({ message: '잘못된 요청입니다.' }), { status: 400 });
  39. // 로그아웃
  40. case 'logout': {
  41. const res = await fetchJson('/api/auth/logout', {
  42. method: 'GET',
  43. headers: {'Content-Type': 'application/json'},
  44. withCredentials: true
  45. });
  46. const headers = new Headers();
  47. if (res.ok) {
  48. headers.append('Set-Cookie', 'accessToken=; HttpOnly; Path=/; Max-Age=0;');
  49. headers.append('Set-Cookie', 'refreshToken=; HttpOnly; Path=/; Max-Age=0;');
  50. }
  51. return new NextResponse(null, {
  52. status: 200,
  53. headers: headers
  54. });
  55. }
  56. }
  57. }